home *** CD-ROM | disk | FTP | other *** search
- #include "pool.h"
-
- #define NEWLIST(l) ((l)->mlh_Head = (struct MinNode *)&(l)->mlh_Tail, \
- (l)->mlh_Tail = NULL, \
- (l)->mlh_TailPred = (struct MinNode *)&(l)->mlh_Head)
-
- APTR LibCreatePool(ULONG requirements, ULONG puddleSize, ULONG threshSize)
- {
- if (SysBase->LibNode.lib_Version>=39)
- return (CreatePool(requirements,puddleSize,threshSize));
- else {
-
- POOL *pool=NULL;
-
- if (threshSize<=puddleSize) {
- puddleSize+=7;
- if ((pool=(POOL *)AllocMem(sizeof(POOL),MEMF_ANY))!=NULL) {
- NEWLIST(&pool->PuddleList);
- pool->MemoryFlags=requirements;
- pool->PuddleSize=puddleSize&~7;
- pool->ThreshSize=threshSize;
- }
- }
- return pool;
- }
- }
-
- VOID LibDeletePool(POOL *poolHeader)
- {
- if (SysBase->LibNode.lib_Version>=39)
- DeletePool(poolHeader);
- else {
-
- if (poolHeader!=NULL) {
-
- ULONG *pool,size;
-
- while((pool=(ULONG *)RemHead((struct List *)&poolHeader->PuddleList))!=NULL) {
- size=*--pool; FreeMem(pool,size);
- }
- FreeMem(poolHeader,sizeof(POOL));
- }
- }
- }
-